import request from "@/utils/request";
const API_BASE_URL = "/biz/data/task";

const DataTaskAPI = {
	/**
	 * 获取数据任务分页列表
	 *
	 * @param queryParams 查询参数
	 * @returns 数据任务分页结果
	 */
	getPage(queryParams: DataTaskPageQuery) {
		return request<any, PageResult<DataTaskPageVO[]>>({
			url: `${API_BASE_URL}/pages`,
			method: "get",
			params: queryParams,
		});
	},

	/**
	 * 保存数据任务
	 *
	 * @param data 数据任务表单数据
	 */
	save(data: DataTaskForm) {
		return request({
			url: `${API_BASE_URL}/save`,
			method: "post",
			data: data,
		});
	},
	
	/**
	 * 删除数据任务
	 *
	 * @param ids 数据任务ID，多个以英文逗号(,)分隔
	 */
	deleteByIds(ids: string) {
		return request({
			url: `${API_BASE_URL}/${ids}`,
			method: "delete",
		});
	},

	/**
	 * 更新任务状态
	 * 
	 * @param id 任务ID
	 * @param enabled 是否启用
	 */
	updateStatus(id: string, enabled: boolean) {
		return request({
			url: `${API_BASE_URL}/${id}/status`,
			method: "post",
			data: {
				status:enabled
			}
		});
	},

	/**
	 * 下拉框
	 */
	options(queryParams: any) {
	  return request<any, any>({
	    url: `${API_BASE_URL}/options`,
	    method: "get",
	    params: queryParams,
	  });
	},

	/**
	 * 测试HTTP接口
	 * 
	 * @param id HTTP接口ID
	 */
	test(id: string) {
		return request<any, HttpTestResult>({
			url: `${API_BASE_URL}/test/${id}`,
			method: "post",
		});
	},

};

export default DataTaskAPI;

/**
 * 数据任务查询参数
 */
export interface DataTaskPageQuery extends PageQuery {
	/**
	 * 关键字(任务名称)
	 */
	keywords?: string;
}

/**
 * HTTP接口下拉选项查询参数
 */
export interface HttpOptionsQuery {
	/**
	 * 关键字(接口名称/URL/方法)
	 */
	keywords?: string;
}

/**
 * 数据任务分页视图对象
 */
export interface DataTaskPageVO {
	/**
	 * 任务ID
	 */
	id: string;
	/**
	 * 任务名称
	 */
	name: string;
	/**
	 * 是否启用(1:是 0:否)
	 */
	enabled: string;
	/**
	 * 是否默认运行(1:是 0:否)
	 */
	defaultRunning: string;
	/**
	 * 备注
	 */
	remark: string;
	/**
	 * 输入配置(JSON字符串)
	 */
	input: string;
	/**
	 * 内容配置(JSON字符串)
	 */
	content: string;
	/**
	 * 标准字段(JSON字符串)
	 */
	standardFields: string;
	/**
	 * 输出目标(JSON字符串)
	 */
	output: string;
	/**
	 * 触发配置(JSON字符串)
	 */
	trigger: string;
	/**
	 * 创建时间
	 */
	createTime: Date;
	/**
	 * 更新时间
	 */
	updateTime: Date;
	/**
	 * 最后执行时间
	 */
	lastTime: Date;
}

/**
 * 数据任务表单对象
 */
export interface DataTaskForm {
	/**
	 * 任务ID
	 */
	id?: string;
	/**
	 * 任务名称
	 */
	name: string;
	/**
	 * 是否启用(1:是 0:否)
	 */
	enabled: string;
	/**
	 * 是否默认运行(1:是 0:否)
	 */
	defaultRunning: string;
	/**
	 * 备注
	 */
	remark?: string;
	/**
	 * 输入配置(JSON字符串)
	 */
	input: string;
	/**
	 * 内容配置(JSON字符串)
	 */
	content: string;
	/**
	 * 标准字段(JSON字符串)
	 */
	standardFields: string;
	/**
	 * 输出目标(JSON字符串)
	 */
	output: string;
	/**
	 * 触发配置(JSON字符串)
	 */
	trigger: string;
}

/**
 * HTTP接口下拉选项视图对象
 */
export interface HttpOptionVO {
	/**
	 * 接口ID
	 */
	id: string;
	/**
	 * 接口名称
	 */
	name: string;
	/**
	 * 请求URL
	 */
	url: string;
	/**
	 * 请求方法
	 */
	method: string;
}

/**
 * HTTP测试结果
 */
export interface HttpTestResult {
	/**
	 * 状态码
	 */
	statusCode: number;
	/**
	 * 响应体
	 */
	body: string;
	/**
	 * 响应头
	 */
	headers: Array<{
		name: string;
		value: string;
	}>;
}